// Paquete
package parte1;
// Biblioteca
import java.util.Scanner;
import java.util.InputMismatchException;

// Clase Suma
public abstract class Suma {

	// Atributos
	private static int primerSumando = 0;
	private static int segundoSumando = 0;
	private static int resultadoSuma = 0;
	private static Scanner escáner = new Scanner(System.in);

	//Método para obtener el primer sumando
	public static int getPrimerSumando(){
		return primerSumando;
	};
	
	// Método para establecer el primer sumando
	public static void setPrimerSumando(int primerSumando){
		Suma.primerSumando = primerSumando;
	};
	
	//Método para obtener el segundo sumando
	public static int getSegundoSumando(){
		return segundoSumando;
	};
	
	// Método para establecer el segundo sumando
	public static void setSegundoSumando(int segundoSumando){
		Suma.segundoSumando = segundoSumando;
	};

	//Método para obtener el resultado de la suma
	public static int getResultadoSuma(){
		return resultadoSuma;
	};
	
	// Método para establecer el resultado de la suma
	public static void setResultadoSuma(int resultadoSuma){
		Suma.resultadoSuma = resultadoSuma;
	};
	
	//Método para obtener el escáner
	public static Scanner getEscáner(){
		return escáner;
	};
	
	
	// Método para sumar los dos números
	public static int sumar(){
		setResultadoSuma(getPrimerSumando() + getSegundoSumando());
		return getResultadoSuma();
	};
	
	public static void main(String args[]) throws ExcepciónNegativo{
		boolean operaciónExitosa = false;
		while(!operaciónExitosa){
			try{
				System.out.println("$%# SUMA DE NÚMEROS ENTEROS#%$\nIntroduzca el primer sumando: ");
				setPrimerSumando(getEscáner().nextInt());
				System.out.println("Introduzca el segundo sumando: ");
				setSegundoSumando(getEscáner().nextInt());
				if(getPrimerSumando() < 0 || getSegundoSumando() < 0){
					throw new ExcepciónNegativo("Error: Ingresó números negativos.\n");
				};
				System.out.println("Resultado: ");
				System.out.println(sumar());
				operaciónExitosa = true;
				}
			catch(InputMismatchException e){
				System.out.println(	"\nExcepción: " + e.toString() + "\nError: Se ingresó un valor inválido.\nSolo se permiten numeros enteros.\nInténtelo de nuevo, por favor.\n");
				getEscáner().nextLine();
				}
			catch(ExcepciónNegativo e){
				System.out.println(e.getMessage() + "Solo se permiten positivos. Intente de nuevo:\n");
			}
			finally{
				System.out.println("¿Operación realizada con éxito? " + operaciónExitosa + "\n");
			}
			}
		
	};
}
